/*
 * pid.h
 *
 *  Created on: 2021年10月29日
 *  Author : wuhexing
 */

#ifndef PID_H_
#define PID_H_

#define POSITION_PID          0  //位置式PID
#define INCREATEMENT_PID      1  //增量式PID
#define EXPERT_PID            2  //专家型PID

typedef struct pid
{
    /* data */
    float setPoint;      //目标值
	float actualPoint;   //实际值
	float result;        //输出调节结果
	float preError;      //上次误差
	float pre2Error;     //上上次误差
	float integral;      //误差积分
    float integral_max;  //位置式积分限幅
	int index;			 //积分分离
	float integral_fenli;  //积分分离阈值
	float KP,KI,KD;      //比例，积分，微分系数
	float maximum;       //输出值上限
	float minimum;       //输出值下限
    /* expert */
    float errorabsmax;   //偏差绝对值中位值
	float errorabsmid;   //偏差绝对值最小值
	float errorabsmin;   //偏差绝对值最小值
}PID;

void Pid_Init(PID* vPID);                            //PID初始化
void Pid_Realize(PID *vPID, int PIDREALIZE_SELSECT); //PID的实现

#endif /* PID_H_ */
